package springmvc.output.controller;

import springmvc.output.pojo.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * description: JSON数据响应
 * 前后端分离模式，Handler接收前端JSON数据 @RequestBody，返回JSON数据 @ResponseBody
 *
 * 1. Handler方法接收前端请求，注解 @Controller @RequestMapping() @GetMapping()
 * 2. @ResponseBody 直接将方法结果数据放入响应体返回，不会走视图解析器，转发和重定向都不生效
 * 3. 方法返回的类对象，会由HandlerAdapter自动转为Json后返回
 * 4. 对象转为JSON格式 {"name":"two dogs!","age":3}
 * 5. 集合转为JSON格式 [{"name":"two dogs!","age":3}]
 * 6. @RestController = @RequestBody + @Controller
 */

//@Controller
//@ResponseBody
@RestController
@RequestMapping("json")
public class JsonController {

    // 返回对象
    @GetMapping("data")
    public User data(){
        User user = new User();
        user.setName("two dogs!");
        user.setAge(3);
        return user;    // 响应结果 {"name":"two dogs!","age":3}
    }

    // 返回集合
    @GetMapping("data2")
    public List<User> data1(){
        User user = new User();
        user.setName("two dogs!");
        user.setAge(3);

        List<User> users = new ArrayList<>();
        users.add(user);
        return users;   // 响应结果 [{"name":"two dogs!","age":3}]
    }
}
